1. Technical Field
The present invention generally relates to hardware adapters and in particular to techniques for accessing features of a hardware adapter.
2. Description of the Related Art
In electronics, the term ‘firmware’ is often used to denote fixed, relatively small programs and/or data structures that internally control various electronic devices. Electronic devices that include firmware range from end-user products (e.g., remote controls, mobile phones, digital cameras, and calculators) to computer peripherals (e.g., hard disk drives (HDDs), keyboards, and memory cards). The term ‘firmware’ was originally coined in order to differentiate from higher level software, which could be changed without replacing a hardware component.
Firmware is typically directed to basic low-level operations without which an electronic device would be non-functional. However, the term ‘firmware’ is also relative as most embedded devices contain firmware at more than one level. For example, various subsystems (e.g., central processing units (CPUs) and communication controllers) may have their own (usually fixed) program code and/or microcode, which is regarded as part of the hardware by higher level firmware. Typically, low-level firmware resides in a read-only memory (ROM), while high-level firmware resides in flash memory to allow for updates. Common reasons for updating firmware include fixing bugs and/or adding features to an electronic device. Updating firmware usually involves loading a binary image file (e.g., provided by a manufacturer) into an electronic device according to a specific procedure.
When entities collaborate in defining a product that employs hardware and software, the entities usually seek to protect their input from being exploited by competitors without compensation. As one example, when a software feature implemented in a computer system drives an architectural design of a hardware adapter, an originator of the software feature may seek to protect their input from being exploited by competitors without compensation.
A known solution for tying a hardware adapter to a computer system has involved providing a specific vendor identifier (ID) and/or sub-vendor ID from a manufacturer of the system to a manufacturer of the adapter. Following this approach, a device driver (e.g., implemented within an OS or within a virtual machine monitor (VMM)) of the system has been configured to verify that a hardware adapter includes the specific vendor ID and/or sub-vendor ID (i.e., that the adapter is a certified adapter) prior to configuring the adapter. In the event a non-certified hardware adapter is placed in a computer system that is configured to verify a hardware adapter by specific vendor ID and/or sub-vendor ID, the non-certified hardware adapter is not recognized by the system and, as such, is not configured. However, the known solution for tying a hardware adapter to a computer system does not prevent the adapter from being placed in a product of a competitor. In this case, a competing product may utilize all features implemented within the adapter.